package pri.zxx.webdemo.aop.redisLock;

import java.lang.annotation.*;
import java.util.concurrent.TimeUnit;

/**
 * @author wangn <15124178@qq.com> 2020/10/12
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface RedisLock {

    /**
     * redis的key 支持SPEL格式
     *
     * @return
     */
    //@el
    String value() default "";

    String message() default "请勿频繁操作";

    /**
     * 是否使用锁 "" 或作 el表达式 为true则使用锁
     *
     * @return
     */
    //@el
    String condition() default "";

    /**
     * 默认过期时间
     *
     * @return
     */
    long lockTime() default 30;

    /**
     * 锁等待时间
     *
     * @return
     */
    long tryTime() default 5;

    /**
     * 是否可重入
     *
     * @return
     */
    boolean reentrant() default true;

    TimeUnit timeUnit() default TimeUnit.SECONDS;
}
